home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
prolog
/
modprolg
/
mod-prol.lha
/
Prolog
/
Examples
/
lib_binary_tree.mod
< prev
next >
Wrap
Text File
|
1992-05-21
|
927b
|
34 lines
signature lib_binary_tree_sig =
sig
pred new/1 and insert/3 and preorder/2 and inorder/2 and postorder/2.
end.
structure lib_binary_tree/lib_binary_tree_sig =
struct
fun tip/0 and node/3.
new(tip).
insert(X,node(Y,L,R),node(Y,NewL,R)) :-
X < Y, !,
insert(X,L,NewL).
insert(X,node(Y,L,R),node(Y,L,NewR)) :-
insert(X,R,NewR).
insert(X,tip,node(X,tip,tip)).
insert(X,node(X,L,R),node(X,L,R)).
preorder(tip,[]).
preorder(node(X,L,R),List) :-
preorder(L,PartL),
preorder(R,PartR),
append([X|PartL],PartR,List).
inorder(tip,[]).
inorder(node(X,L,R),List) :-
inorder(L,PartL),
inorder(R,PartR),
append(PartL,[X|PartR],List).
postorder(tip,[]).
postorder(node(X,L,R),List) :-
postorder(L,PartL),
postorder(R,PartR),
append(PartR,PartL,Part),
append(Part,[X],List).
end.